package com.xnx3.wangmarket.shop.core.entity;

import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Index;
import javax.persistence.Table;

/**
 * 订单内的商品
 * @author 王晓龙
 */
@Entity()
@Table(name = "shop_order_goods", indexes={@Index(name="suoyin_index",columnList="orderid,goodsid,userid")})
public class OrderGoods implements java.io.Serializable{
	private Integer id;				//自动编号
	private Integer orderid;		//订单的ID，对应 Order.id
	private Integer goodsid;		//商品的id，对应 Goods.id
	private Integer userid;			//购买者的用户ID，对应User.id
	private String title;		//商品名字，对应 Goods.title ，就是吧Goods的信息复制过来了，相当于给商品做了一个镜像
	private Integer price;		//商品单价，单位是分，对应 Goods.price，斑马回收中，当用户下单后，这里是系统自动预估的一个用于计算订单整体价格的单价，当骑手上门取货时，这里是骑手现场又填写的实际支付给用户的单价
	private String units;		//商品单位，对应 Goods.units
	private String titlepic;	//商品的标题图片，列表图，对应 Goods.titlepic	
	private Integer number;			//该垃圾的数量，重量，单位是g，注意是g不是kg。当骑手上门取货时，这里是骑手现场又填写的实际的重量（斑马回收使用）
	
	/** 斑马回收相关添加 */
	private String image;		//骑手上门取货时，拍照上传的图片绝对路径url。如果骑手还没上门回收，这里是空的（斑马回收添加）
	private Integer goodsTypeId;	//对应的商品大分类的id， goods_type.id ，在创建订单创建这条记录时就会赋予此。（斑马回收增加）
	private String goodsTypeName;	//对应的商品大分类的name， goods_type.name ，在创建订单创建这条记录时就会赋予此。（斑马回收增加）
	private Integer minMoney;	//最小价格，单位是分（斑马回收增加）
	private Integer maxMoney;	//最大价格，单位是分（斑马回收增加）
	private Integer money;		//订单下，这个商品的总金额，单位是分。也就是 price * (number/1000) 得出的值。在用户下单时这里是计算出的预估的，当旗手上门取货时这里是骑手自己填写单价重量所出的真实给用户结算的该商品金额
	private Integer minWeight;	//最小重量，单位是g，（斑马回收增加）用户在下单时会有个预估重量区间
	private Integer maxWeight;	//最大重量，单位是g，（斑马回收增加）用户在下单时会有个预估重量区间
	
	
	//购买的商品是什么规格，这里是规格的名字。
	//比如goods.specification 为 [{"黄色":901},{"黑色":800},{"白色":705}] ，那么这里存的便是 黄色 。
	//如果商品没有规格，那这里则是空字符串。 v1.6增加, 限制30个字符以内
	private String specificationName;	//购买的商品是什么规格，这里是规格的名字。比如goods.specification 为 [{"黄色":901},{"黑色":800},{"白色":705}] ，那么这里存的便是 黄色 。如果商品没有规格，那这里则是空字符串。 v1.6增加, 限制30个字符以内
	
	public OrderGoods() {
	}
	
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id", unique = true, nullable = false)
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	
	@Column(name = "orderid", columnDefinition="int(11) comment '订单的ID，对应 Order.id'")
	public Integer getOrderid() {
		return orderid;
	}
	public void setOrderid(Integer orderid) {
		this.orderid = orderid;
	}
	
	@Column(name = "goodsid", columnDefinition="int(11) comment '商品的id，对应 Goods.id'")
	public Integer getGoodsid() {
		return goodsid;
	}
	public void setGoodsid(Integer goodsid) {
		this.goodsid = goodsid;
	}
	
	@Column(name = "userid", columnDefinition="int(11) comment '购买者的用户ID，对应User.id'")
	public Integer getUserid() {
		return userid;
	}
	public void setUserid(Integer userid) {
		this.userid = userid;
	}
	
	@Column(name = "title", columnDefinition="char(40) comment '商品名字，对应 Goods.title ，就是吧Goods的信息复制过来了，相当于给商品做了一个镜像'")
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	
	@Column(name = "price", columnDefinition="int(11) comment '商品单价，单位是分，对应 Goods.price，斑马回收中，当用户下单后，这里是系统自动预估的一个用于计算订单整体价格的单价，当骑手上门取货时，这里是骑手现场又填写的实际支付给用户的单价'")
	public Integer getPrice() {
		return price;
	}
	public void setPrice(Integer price) {
		this.price = price;
	}
	
	@Column(name = "units", columnDefinition="char(5) comment '商品单位，对应 Goods.units'")
	public String getUnits() {
		return units;
	}
	public void setUnits(String units) {
		this.units = units;
	}
	@Column(name = "titlepic", columnDefinition="char(150) comment '商品的标题图片，列表图，对应 Goods.titlepic'")
	public String getTitlepic() {
		return titlepic;
	}
	public void setTitlepic(String titlepic) {
		this.titlepic = titlepic;
	}
	@Column(name = "number", columnDefinition="int(11) comment '该垃圾的数量，重量，单位是g，注意是g不是kg。当骑手上门取货时，这里是骑手现场又填写的实际的重量（斑马回收使用）'")
	public Integer getNumber() {
		if(number == null) {
			return 0;
		}
		return number;
	}
	public void setNumber(Integer number) {
		this.number = number;
	}
	
	@Column(name = "specification_name", columnDefinition="char(30) comment '购买的商品是什么规格，这里是规格的名字。如果商品没有规格，那这里则是空字符串。 '")
	public String getSpecificationName() {
		if(specificationName == null) {
			return "";
		}
		return specificationName;
	}
	public void setSpecificationName(String specificationName) {
		this.specificationName = specificationName;
	}
	@Column(name = "image", columnDefinition="char(150) COLLATE utf8mb4_general_ci COMMENT '骑手上门取货时，拍照上传的图片绝对路径url。如果骑手还没上门回收，这里是空的（斑马回收添加）' default ''")
	public String getImage() {
		return image;
	}
	public void setImage(String image) {
		this.image = image;
	}
	@Column(name = "goods_type_id", columnDefinition="int(11) COMMENT '对应的商品大分类的id， goods_type.id ，在创建订单创建这条记录时就会赋予此。（斑马回收增加）' default '0'")
	public Integer getGoodsTypeId() {
		return goodsTypeId;
	}
	public void setGoodsTypeId(Integer goodsTypeId) {
		this.goodsTypeId = goodsTypeId;
	}
	@Column(name = "goods_type_name", columnDefinition="char(20) COLLATE utf8mb4_general_ci COMMENT '对应的商品大分类的name， goods_type.name ，在创建订单创建这条记录时就会赋予此。（斑马回收增加）' default ''")
	public String getGoodsTypeName() {
		return goodsTypeName;
	}
	public void setGoodsTypeName(String goodsTypeName) {
		this.goodsTypeName = goodsTypeName;
	}
	@Column(name = "min_money", columnDefinition="int(11) COMMENT '最小价格，单位是分（斑马回收增加）' default '0'")
	public Integer getMinMoney() {
		return minMoney;
	}
	public void setMinMoney(Integer minMoney) {
		this.minMoney = minMoney;
	}
	@Column(name = "max_money", columnDefinition="int(11) COMMENT '最大价格，单位是分（斑马回收增加）' default '0'")
	public Integer getMaxMoney() {
		return maxMoney;
	}
	public void setMaxMoney(Integer maxMoney) {
		this.maxMoney = maxMoney;
	}
	@Column(name = "money", columnDefinition="int(11) COMMENT '订单下，这个商品的总金额，单位是分。也就是 price * (number/1000) 得出的值。在用户下单时这里是计算出的预估的，当旗手上门取货时这里是骑手自己填写单价重量所出的真实给用户结算的该商品金额' default '0'")
	public Integer getMoney() {
		return money;
	}

	public void setMoney(Integer money) {
		this.money = money;
	}
	
	@Column(name = "min_weight", columnDefinition="int(11) COMMENT '最小重量，单位是g，（斑马回收增加）用户在下单时会有个预估重量区间' default '0'")
	public Integer getMinWeight() {
		return minWeight;
	}

	public void setMinWeight(Integer minWeight) {
		this.minWeight = minWeight;
	}

	@Column(name = "max_weight", columnDefinition="int(11) COMMENT '最大重量，单位是g，（斑马回收增加）用户在下单时会有个预估重量区间' default '0'")
	public Integer getMaxWeight() {
		return maxWeight;
	}

	public void setMaxWeight(Integer maxWeight) {
		this.maxWeight = maxWeight;
	}

	@Override
	public String toString() {
		return "OrderGoods [id=" + id + ", orderid=" + orderid + ", goodsid=" + goodsid + ", userid=" + userid
				+ ", title=" + title + ", price=" + price + ", units=" + units + ", titlepic=" + titlepic + ", number="
				+ number + ", image=" + image + ", goodsTypeId=" + goodsTypeId + ", goodsTypeName=" + goodsTypeName
				+ ", minMoney=" + minMoney + ", maxMoney=" + maxMoney + ", specificationName=" + specificationName
				+ "]";
	}
	
}
